A three-dimensional (3-D) image as discussed in the present invention is an image that is viewable in two dimensions, but can be manipulated such that a user can view it from different viewpoints so as to simulate viewing in three dimensions. Viewing 3-D images on a computer is becoming increasingly important. Being able to view an image in three dimensions allows a viewer to extract a great deal more information from that image. Rotating an image so as to view it from several different angles can make relationships and dependencies instantly clear, where it may be very difficult to do so otherwise. For example, consider an image of an automobile crashing into a wall. Rotating that image to allow a viewer to see the image from different angles allows that viewer to observe in three-dimensions how the automobile behaves in such a collision. It also provides a considerable time savings, as the user will not have to iterate through several two-dimensional views to gather the same information.
A 3-D movie consists of a series of images or frames displayed in a sequence. A 3-D movie provides the further benefit of being able to observe an event in three-dimensions with respect to time. In the automobile crash example, for instance, the viewer could observe the effects on different parts of the automobile in three-dimensions, and see at what point in time events occur. By watching this 3-D movie, the user could estimate how safe a vehicle is by simulating a crash, and observing how the vehicle behaved in the crash with respect to time.
Several ways of creating and viewing graphics exist today. For example, it is possible to view an image in three-dimensions using the concept of voxels. A voxel is a 3-D pixel, describing a piece of information at a given point in 3-D space. A 3-D image consisting of voxels is a 3-D matrix of these pieces, such that there is a voxel for each point in the 3-D space of the image. As such, images composed of voxels have the potential of being extremely large, sometimes on the order of millions, or tens of millions, of pieces of data. This results in difficulty in processing a series of images. Additionally, transmission and space limitations can also arise. Voxels are often used for analyzing scientific or medical data, such as a 3-D image created out of a series of two-dimensional computed tomography (CT) images. This allows a user to view a multitude of two dimensional slices out of a single 3-D image.
Another way of creating and viewing graphics is by using the Virtual Reality Modeling Language (VRML). VRML is a language used to describe a virtual world. VRML is a high level language such that a group of VRML commands maps to a group of graphics instructions, not necessarily on a one to one basis. A file written in this language instructs a computer on how to build 3-D geometric objects. However, a VRML file is an ASCII file, and as such, has the potential to be very large. This presents problems in efficient transmission of large series of 3-D images over networks. Additionally, it is necessary to have VRML specific viewing software, such as a plug in for an Internet browser, to translate the VRML file into graphics instructions (described below) that can be rendered by a rendering tool. Furthermore, writing VRML files requires learning the VRML language, which can require a considerable investment of time.
It is useful in analyzing data as well as in presenting and explaining data, to display the data in a movie form. For example, it is useful to attach a movie to an electronic document or presentation. This enhances the recipient's understanding of the information conveyed by the document or presentation. Several protocols have been developed for viewing a series of images in sequence, in the form of a movie. Examples of these are AVI and MPEG technology. However these technologies display a series of two dimensional images in sequence, and as such limit the user in that the vantage point for viewing the movie cannot be changed.
Another way of creating 3-D images is to use common graphics libraries such as OpenGL or PHIGS. These libraries provide an interface to the graphics hardware of the computer. Generally, these libraries contain procedures and functions that allow a programmer to describe simple geometry and geometric manipulations. The result is instructions on how to build 3-D-images. A 3-D movie can consist of a sequence of these images. The advantage of using this method of creating 3-D images is that it is not necessary to specify a value of each point in 3-D space, as is done in rendering a voxel image. It is sufficient to specify how that image is to be drawn by a rendering tool.
Typically, one interfaces with a graphics library such as OpenGL by first writing a file with information, such as coordinates of objects, pertaining to the image to be rendered. This information is then translated into OpenGL calls by an application, for example FEMB, Hypermesh, or Pro Engineer. In general, these applications are company specific and proprietary, and thus expensive to obtain. Furthermore, they often provide much more functionality than just image viewing, which may be unneeded by someone who just needs to view the output. A series of images can be viewed sequentially from a multitude of viewpoints using this type of application. However, in order to send the series of images to one who does not own the application, it is necessary to capture the output of the application in a standard two-dimensional movie file format such as AVI.
Thus such approaches do not provide a way of efficiently storing and transferring sequences of 3-D images composed of graphics instructions. They also do not provide a way of storing and transmitting a series of 3-D images that is easy for a user to learn, and, for example, does not require learning an extensive new language.